package com.yhsimon.principle._4_liskov;

public class Liskov {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.func1(11,8));
        B b = new B();
        System.out.println("---------------------");
        System.out.println(b.func1(11,8));
        System.out.println(b.func2(11,8));
        System.out.println(b.func3(11,8));
    }
}

//创建一个更加基础的基类
class Base{
    //把更加基础的方法和成员写到 Base 类
}
class A extends Base{
    public int func1(int n1,int n2){
        return n1-n2;
    }
}

class B extends Base{
    //如果 B 需要使用 A 类的方法,使用组合关系
    private A a=new A();

    //在原来,这里，重写了 A 类的方法,  可能是无意识
    public int func1(int a, int b) { return a + b;
    }

    public int func2(int a, int b) { return func1(a, b) + 9;
    }

    //仍然想用A的方法
    public int func3(int a,int b){
        return this.a.func1(a,b);
    }
}